Описание плагина:
Плагин позволяет накладывать, только в бою(!), на героя в партии Статус при достижении значения TP.
Нюансы:
В данной версии нельзя менять статус, что изначально настроен у героя.
У одного героя может быть только один настроенный статус (или ни одного).
В логе боя наложение статуса текстом не отображается.
Плагин действует только в бою.
Использование плагина(одинаково и для MV , и для MZ):
В Примечании героя нужно написать:
<onMaxTpLimit:X>
<onMaxTpStateId:Y>
<onMaxTpStateRemoveTp:Z> где:
'X' - значение Tp героя, при котором будет наложен статус (от 1 до 100);
'Y' - Id (номер) накладываемого Состояния...см. в редакторе MV в "Состояния".
'Z' - значение Tp, которое будет отнято у героя после наложения Состояния (от 0 до 100).
Параметры плагина
Включено ли наложение статусов со старта игры.
Команды (в эвенте, в команде "Скрипт") DKR.OnMaxTpState.OnOffMaxTpState(true / false); - включает / выключает работу плагина (true = вкл, false = выкл.);
Код:
СпойлерВерсия 1.0, для MV и MZ:
Код:
/*:
*-----------------------------------------------------------------------------
* DKR OnMaxTpState
*-----------------------------------------------------------------------------
* For: RPGMAKER MV, MZ
* DKR_OnMaxTpState.js
*-----------------------------------------------------------------------------
* 25.12.2021 - Версия 1.0.0
*-----------------------------------------------------------------------------
* Поставляется AS-IS.
* Вся ответственность при использовании - на Пользователе!
*-----------------------------------------------------------------------------
*-----------------------------------------------------------------------------
* @author DarchanKaen
* @target MV, MZ
* @plugindesc (v.1.0.0) Плагин позволяет накладывать на героя в партии Статус при достижении значения Tp.
* @help
* DKR OnMaxTpState MV, MZ 1.0
* ----------------------------------------------------------------------------
* ---Общая информация:
* Плагин позволяет накладывать на героя в партии Состояние при достижении значения Tp,
* а также отнимать Tp героя после получения Статуса. Это все можно настроить.
* Состояние может быть как положительный и отрицательный, в.т.ч. "Смерть".
* ---Использование:
* --Параметры плагина
* В параметрах можно указать, включена ли работа плагина по-умолчаню.
* --В Примечании героя:
* <onMaxTpLimit:X>
* <onMaxTpStateId:Y>
* <onMaxTpStateRemoveTp:Z>
* где:
* 'X' - значение Tp героя, при котором будет наложен статус (от 1 до 100);
* 'Y' - Id (номер) накладываемого Состояния...см. в редакторе MV в "Состояния".
* 'Z' - значение Tp, которое будет отнято у героя после наложения Состояния (от 0 до 100).
* --Команды (для раздела "Скрипт"):
* DKR.OnMaxTpState.OnOffMaxTpState(true / false); - включает / выключает работу плагина (true = вкл, false = выкл.);
* ----------------------------------------------------------------------------
*
* @param maxTpStateOn
* @type boolean
* @desc Включен ли плагин со старта игры
* @default true
*/
var Imported = Imported || {};
Imported.DKR_OnMaxTpState = true;
var DKR = DKR || {};
DKR.OnMaxTpState = DKR.OnMaxTpState || {};
DKR.OnMaxTpState.version = 1.0;
DKR.OnMaxTpState.parameters = PluginManager.parameters('DKR_OnMaxTpState_MVMZ');
( () => {
//---DATA
DKR.OnMaxTpState.maxTpStateOn = (DKR.OnMaxTpState.parameters['maxTpStateOn']=== 'true') ? true : false;
//---RPGMV SYMBIOSIS
DKR.OnMaxTpState.refresh = Game_Battler.prototype.refresh;
Game_Battler.prototype.refresh = function() {
DKR.OnMaxTpState.refresh.call(this);
if(true === DKR.OnMaxTpState.maxTpStateOn){
if( true === this.isActor() ){
if ( this._tp >= getOnMaxTpLimit(this) ){
applyOnMaxTpState(this);
}
}
}
}
//---LOGIC
let applyOnMaxTpState = function(gameActor){
let isError = false;
let maxTpStateIdAndRemoveValue = getMaxTpStateIdAndRemoveValue(gameActor);
let maxTpStateId = maxTpStateIdAndRemoveValue[0];
let maxTpRemoveValue = maxTpStateIdAndRemoveValue[1];
if(maxTpStateId < 1){
isError = true;
console.log('DKR.OnMaxTpState: error! State Id can`t be below 1!');
}
if(maxTpRemoveValue < 0 || maxTpRemoveValue > 100){
isError = true;
console.log('DKR.OnMaxTpState: error! Remove Tp is ' + maxTpRemoveValue + ', it can`t be below 0 or more than 100!');
}
if(false === isError){
gameActor.addState(maxTpStateId);
gameActor._tp -= maxTpRemoveValue;
}else{
return false;
}
}
let getOnMaxTpLimit = function (gameActor){
maxTpLimit = -1;
let actorMetadata = getActorMetadata(gameActor);
maxTpLimit = Number(actorMetadata.onMaxTpLimit);
//console.log('maxTpLimit:', maxTpLimit);
if(maxTpLimit < 1 && maxTpLimit > 100){
console.log('DKR.OnMaxTpState: error! Max Tp is ' + maxTpLimit + ', it can`t be below 1 and more than 100!');
}
return maxTpLimit;
}
let getMaxTpStateIdAndRemoveValue = function(gameActor){
let maxTpStateId = -1;
let tpRemoveValue = 0;
let actorMetadata = getActorMetadata(gameActor);
if(null === actorMetadata){
return [maxTpStateId, tpRemoveValue];
}
maxTpStateId = Number(actorMetadata.onMaxTpStateId);
tpRemoveValue = Number(actorMetadata.onMaxTpStateRemoveTp);
//console.log('maxTpStateId, tpRemoveValue:', maxTpStateId, tpRemoveValue);
return [maxTpStateId, tpRemoveValue];
}
let getActorMetadata = function(gameActor){
let actorMetadata = null;
let actorId = gameActor.actorId();
let actor = $dataActors[actorId];
//console.log('actorId:', actorId);
actorMetadata = actor.meta;
return actorMetadata;
}
//---COMMAND
DKR.OnMaxTpState.OnOffMaxTpState = function(isOn){
DKR.OnMaxTpState.maxTpStateOn = isOn;
}
})();
Условия поставки плагина:
Поставляется AS-IS.
Вся ответственность при использовании - на Пользователе! !
Совместимость:
Совместимость с другими плагинами не гарантируется.
СпойлерЛирическое отступление:
Делал для одной своей игры, так вышло, что использовал в совсем другой.
Что-то подобное есть у Янфли...но я не разобрался, как корректно настроить его вариант. =)
И еще меня удивило, что подобных плагинов почти нет (ну или я криво гуглю).
Кроме этого, подобную технику можно использовать для ХП и МП, чуть изменив код плагина в части проверки условия:
" if ( this._tp >= getOnMaxTpLimit(this) ){ "
Быть может, вам это пригодится чтоб разнообразить бои.
Социальные закладки